/////////////////////////////////////////////////////////////////////////
//
// Amuse Engine SDK - resource
// Copyright( c) 2014.  All Rights Reserved
//
// File:		AETextureLoaderI.h
// Author:		Gianluca Belardelli
// Date:		01/10/2014
//
/////////////////////////////////////////////////////////////////////////
#ifndef _AETEXTURELOADERI_H_
#define _AETEXTURELOADERI_H_

class AETexture;

/// \brief
///   Pure virtual interface for texture resource loading. Implemented by VTextureManager in the engine.
class AETextureLoaderI : public AEResourceLoaderI
{
protected:
	AEINT16		m_sSizeX;
	AEINT16		m_sSizeY;

	AEUINT8		m_cFormat;
	AEUINT8		*m_lpRawBuffer;

public:
	/// \brief Destructor
	virtual ~AETextureLoaderI( void ) {}

	virtual AEUINT32 CreateTexture( const char *lpFilename, AEINT32 &nFlags ) = 0;
	
	AE_FORCEINLINE AEUINT8 *GetRawBuffer( AEUINT32 uiIndex );
	
	AE_FORCEINLINE AEINT16 GetWidth( void );
	AE_FORCEINLINE AEINT16 GetHeight( void );

	AE_FORCEINLINE AEUINT8 GetTextureFormat( void );
};

#include "AETextureLoaderI.inl"

#endif // _AETEXTURELOADERI_H_
